package com.dp.server;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

//import com.dp.client.dto.ConfiguracionBusqueda;
import com.dp.client.dto.ConfiguracionDTO;
import com.dp.client.servicios.configuracion.IServiciosConfiguracion;
import com.dp.server.entities.Configuracion;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class IServiciosConfiguracionImpl extends RemoteServiceServlet implements IServiciosConfiguracion
{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override 
	public boolean registrarConfiguracion(ConfiguracionDTO configuracionDTO) {
		Configuracion configuracion = new Configuracion(configuracionDTO);
		// saving the data on DB
		EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("some_name_you_choose");
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		entityManager.getTransaction().begin();
		entityManager.merge(configuracion);
		entityManager.getTransaction().commit();
		entityManager.close();


		return true;
	}
	
	public List<ConfiguracionDTO> listConfiguracions(){
		EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("some_name_you_choose");
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		List<Configuracion> lista = entityManager.createQuery("from Configuracion").getResultList();
		entityManager.close();
		ArrayList<ConfiguracionDTO> result = new ArrayList<ConfiguracionDTO>();
		for(Configuracion c : lista){
			result.add(new ConfiguracionDTO(c.getId(), c.getDescripcion(), c.getValor()));
		}
		return result;
	}

	@Override
	public boolean eliminarConfiguracion(int configuracionId) {
		EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("some_name_you_choose");
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		entityManager.getTransaction().begin();
		entityManager.createQuery("delete from Configuracion where id = " + configuracionId).executeUpdate();
		entityManager.getTransaction().commit();
		entityManager.close();
		return true;
	}

	//@Override
	//public List<ConfiguracionDTO> buscarConfiguracions(ConfiguracionBusqueda ConfiguracionBusqueda) {
		//EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("some_name_you_choose");
		//EntityManager entityManager = entityManagerFactory.createEntityManager();
		
		//String query = "from Configuracion where ";
		//query += " apellido1 like '%" + ConfiguracionBusqueda.getApellido1() + "%' ";
		//query += " and apellido2 like '%" + ConfiguracionBusqueda.getApellido2() + "%' ";
		//query += " and nombre like '%" + ConfiguracionBusqueda.getNombre() + "%' ";
		//if(ConfiguracionBusqueda.getCodigo().matches("\\d+"))
			//query += "and id = " + ConfiguracionBusqueda.getCodigo();
			
		
		//List<Configuracion> lista = entityManager.createQuery(query).getResultList();
		//entityManager.close();
		//ArrayList<ConfiguracionDTO> result = new ArrayList<ConfiguracionDTO>();
		//for(Configuracion c : lista){
			//result.add(new ConfiguracionDTO(c.getId(), c.getNombre(), c.getApellido1(), c.getApellido2(), 
					//c.getCorreo(), 0 /* envios */, c.getFechaRegistro()));
		//}
		//return result;
	//}
}
